# -*- coding: utf-8 -*-
# @Time    : 2021/4/29 17:01
# @Author  : Zhangrenjie
# @Email   : zhangrenjie1998@163.com
# @File    : Iterator.py
# @Software: PyCharm

"""

 如何判断一个对象是可迭代对象，迭代器对象或生成器
可迭代对象 有iter()方法
迭代器 任何实现了__iter__()和__next__()都是迭代器
生成器 生成器是一个包含有yield的函数
 迭代器与生成器的区别
生成器不需要手动编写__iter__()和__next__()方法，只需要一个yiled关键字
 可迭代对象与迭代器的区别
 迭代器对象：__iter__()返回的是迭代器对象自身。
迭代器：__iter__()：返回迭代器自身
 如何定义一个生成器
普通函数中加入yield方法
 如何获取可迭代对象、迭代器与生成器中的数据
迭代器和生成器都是用next方法获取数据

"""


"""

查找一个文件中最长的行，输出长度
• 考虑文件比较大
• 考虑代码精简
• # 生成一个大文本

"""
import string
import random
# with open('big.txt','w+',encoding="utf-8") as f:
#     for i in range(10**7):
#         f.write(("".join(random.choices(string.ascii_lowercase,k=random.randint(1,50)))+"\n"))
# def func():
#     with open('big.txt','r',encoding="utf-8") as f:
#         while True:
#                 block = ''.join(f.readline().split())
#                 if block:
#                     yield block
#                 else:
#                     return

print(max(len(line.strip()) for line in open('big.txt')))

